<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title></title>
	</head>
	<body>
		<script type="text/javascript">
			//3.4.1 typeof操作符
				//typeof 是一个操作符而不是函数
				//调用 typeof null会返回"object"，因为特殊值 null 被认为是一个空的对象引用
		    //3.4.2 Undefined类型
		         //在使用 var 声明变量但未对其加以初始化时，这个变量的值就是 undefined
		    //3.4.3 Null类型
		        //从逻辑角度来看，null 值表示一个空对象指针，而这也正是使用 typeof 操作符检测 null 值时会返回"object"的原因
		        //如果定义的变量准备在将来用于保存对象，那么最好将该变量初始化为 null 而不是其他值
		        //实际上，undefined 值是派生自 null 值的，因此 ECMA-262 规定对它们的相等性测试要返回 true
//		        console.log(null==undefined);//true
		    //3.4.4  Boolean类型
		        //该类型只有两个字面值：true和false，字面值是区分大小写的
		        //虽然 Boolean 类型的字面值只有两个，但 ECMAScript 中所有类型的值都有与这两个 Boolean 值等价的值。
                //对任何数据类型的值调用 Boolean()函数，而且总会返回一个 Boolean 值。
                //至于返回的这个值是 true 还是 false，取决于要转换值的数据类型及其实际值.
                /*转换为true的值 true、任何非空字符串 、任何非零数字（包括无穷大）、任何对象
                                转化为fasle的值 false、空字符串、0和NaN、null、undefined*/
//              var message = "Hello world";
//              console.log(Boolean(message));
            //3.4.5 Number类型
                 var intNum = 55;//整数
                 var octalNum1 = 070;//八进制的56
                 var octalNum2 = 079; // 无效的八进制数值——解析为 79
                 var octalNum3 = 08; // 无效的八进制数值——解析为 8
                 //八进制字面量在严格模式下是无效的，会导致支持的 JavaScript 引擎抛出错误。
                 //1.浮点数值
                 //2.数值范围
                 //3.NaN
                       /*即非数值（Not a Number）是一个特殊的数值，
                        * 这个数值用于表示一个本来要返回数值的操作数未返回数值的情况（这样就不会抛出错误了）*/ 
                        console.log(NaN==NaN);//false
                 //4.数值转换 Number()、parseInt()、parseFloat()
            //3.4.6 String
                 //用双引号表示的字符串和用单引号表示的字符串完全相同
                 //1.字符字面量 \n换行
                 //2.字符串的特点
                     /*ECMAScript 中的字符串是不可变的，也就是说，字符串一旦创建，它们的值就不能改变。要改变
					     某个变量保存的字符串，首先要销毁原来的字符串，然后再用另一个包*/
			     //3.转换为字符串
			        //数值、布尔值、对象和字符串值（没错，每个字符串也都有一个 toString()方法
			        //多数情况下，调用 toString()方法不必传递参数。但是，在调用数值的 toString()方法时，可以传递一个参数：输出数值的基数。
			//3.4.7 Object类型
			       var o = new Object();
			       //constructor：保存着用于创建当前对象的函数。
			       //hasOwnProperty(propertyName)：用于检查给定的属性在当前对象实例中（而不是在实例的原型中）是否存在。
			       //isPrototypeOf(object)：用于检查传入的对象是否是传入对象的原型（第 5 章将讨论原型）
		</script>
	</body>
</html>
